<!DOCTYPE html>
<html>
<head>
    <link href="/prism/prism.css" rel="stylesheet" />
</head>
<body>
    <pre><code class="language-java">

代码生成器：
该项目为代码生成器 基于Apache Velocity的 Java模板引擎
base_build文件夹为最原始代码
为整理后的版本
执行：
com.mmk.BaseApplication.java或生成jar包：run Maven intall

访问路径：http://127.0.0.1:10001/codeUI/index.html
不可用localhost 访问
登录界面输入的是作者

编辑项目源码时卡死解决方案：
找到.project，用记事本打开，把两处删除掉：
第一处：
org.eclipse.wst.jsdt.core.javascriptValidator
第二处：
org.eclipse.wst.jsdt.core.jsNature
保存退出，refresh一下工程。会弹出一个提示框，选中复选框，点击否


模板加载地址：
resources/static/template.json


添加模板地址：
src/main/resources/
注意：模板文件夹下config是配置文件，只做内容追加
 

com.mmk.code.common.PropertyNameTools.java 设置表初始加载的时候数据库字段类型对应的实体字段类型




\#foreach($field in $fieldList)
	 \#if(\$!{velocityCount}==\$!{fieldList.size()})//当循环到最后一个时
 		" s.${field.columnName}"+
	\#else
 	" s.${field.columnName},"+
	\#end 
   \#end;
   
   $fieldList 字段列表
    ${field.comment} 字段描述
	${field.columnName}数据库字段名称
	${field.inputType} input字段类型
	${field.validate}表单验证类型
	${field.field} 实体字段名称
	${field.fieldUp} 实体字段名称首字母大写
	${field.data_type} 数据库类型
	${field.type} 实体字段类型
	编辑页面默认值（表名称，要显示的表字段）
	${field.inputValueOne} 表名称sys_dept
	${field.inputValueOneL}  表实体sysDept
	${field.inputValueOneU}  表实体SysDept
	${field.findBy} 启用特殊方法findBy
	${field.findAllBy}  启用特殊方法findAllBy
	${field.existsMethod}  启用特殊方法exists

以上对应字段值设置
\resources\static\codeUI\app\store
${field.inputType}=="input"
\#if($field.validate=="mobile")lay-verify="phone"\#elseif(!$field.nullable)lay-verify="required"\#end
\#if( $field.type == "Date")

	
${model.packageName}包名
${model.modulePackage}模块名
${model.model}大写 实体名字
${model.modelL}首字母小写 实体名字
${model.comment}数据库中表的注释，实体的注释

*@author ${model.author} ${date}

${model.tableName} 数据库名字

表单验证：
 &lt;input type="text"  name="${field.field}" placeholder="请输入${field.comment}" autocomplete="off"  data-rule="${field.comment};required;\#if(${field.validate})${field.validate};" data-msg="不符合规则" \#else " \#end value="${${model.modelL}.${field.field}}"/&gt;
						
生成：
 &lt;input type="text"  name="type" placeholder="请输入违规类型,0-一般，1-严重" autocomplete="off"  data-rule="违规类型,0-一般，1-严重;required;number;" data-msg="不符合规则"  value="${cbViolateNotice.type}"/&gt;
                       
------------------------------------
（1）判断null
\#if( $name  ==  null)
 something code
\#end
(2)判断null或者false
\#if( !$name)
 something code
\#end
(3)判断null或者空字符串
\#if( "\$!name" == "")
 something code
\#end
-----------------------------					   

sql拼接
\#if($field.type=="String")
\#if($field.matchType == 'any')
        sql.append(" and s.name like '%").append(search_name).append("%'");
\#elseif($field.matchType == 'eq')
        if(StringUtils.isNotBlank(condition.get${field.fieldUp}())){
            sb.append(" and ${field.columnName} = ?\$!{velocityCount} ");
            params.put(\$!{velocityCount},condition.get${field.fieldUp}());
        }
\#elseif($field.matchType == 'left')
        if(StringUtils.isNotBlank(condition.get${field.fieldUp}())){
            sb.append(" and ${field.columnName} like ?\$!{velocityCount} ");
            params.put(\$!{velocityCount},condition.get${field.fieldUp}()+"%");
        }
\#elseif($field.matchType == 'right')
        if(StringUtils.isNotBlank(condition.get${field.fieldUp}())){
            sb.append(" and ${field.columnName} like ?\$!{velocityCount} ");
            params.put(\$!{velocityCount},"%"+condition.get${field.fieldUp}());
        }
\#elseif($field.matchType == 'dateRange')
        if(condition.get${field.fieldUp}Begin()!=null){
            sb.append(" and ${field.columnName} >= ?\$!{velocityCount} ");
            params.put(\$!{velocityCount},condition.get${field.fieldUp}Begin());
        }
        if(condition.get${field.fieldUp}End()!=null){
            sb.append(" and ${field.columnName} >= ?\$!{velocityCount} ");
            params.put(\$!{velocityCount},condition.get${field.fieldUp}End());
        }
\#end
\#else
\#if($field.matchType != 'none')
        if(condition.get${field.fieldUp}()!=null){
            sb.append(" and ${field.columnName} = ?\$!{velocityCount} ");
            params.put(\$!{velocityCount},condition.get${field.fieldUp}());
        }
\#end
\#end

模拟文件结构不能更改，删除其中的文件会报错


注意：
1、生成代码的时候会直接覆盖
2、maven 生成的jar包 会存在乱码问题：解决方式：命令行中执行  java -Dfile.encoding=utf-8 -jar APA_BUILD-1.0.0.jar

-------------------------------------------------------------------
 

1、生成代码的时候会直接覆盖
2、必须设计表的时候
	字段填写注释
	表上填写注释
3、数据库中设计必须有：id(自增),code(uuid,标识),create_time,create_code,update_code,update_time,del_flag(逻辑删除，1)


 -------------------------------------------------------------
 





</code></pre>
    <script src="/prism/prism.js"></script>
</body>
</html>